In recent years, there has been a great deal of improvement in the sophistication and efficiency of methods for storing and retrieving data in information sources. One significant problem with this progression, however, is that different companies (and even different departments within one company) each use different information systems to support their data. It is often a very complex task to integrate data from one information system with data from another information system. Typically, it is necessary for companies to laboriously convert the multiple information source formats to be compatible with each other.
Although there are an infinite number of situations in which it may be desirable to access data stored in disparate information sources, an exemplary situation is the merging of two companies. For instance, prior to the merger, the accounting department of each company may have its own accounting information source, accessible by a corresponding information system. Each accounting information source may store data such as customer names, addresses, social security numbers, interest rates, earnings, or a myriad of other types of data. Each type of data is stored in a data field having a data field name.
Data may be retrieved from the information sources by a user making a query request, using a query request language compatible with the information system and recognizable by the information source.
After the merger of the two companies, a single accounting department is likely to exist. This accounting department will be required to access the data in both of the information sources. However, because the information sources were created and maintained before the merger, they are unlikely to be accessible simultaneously. For instance, if the information systems of each are different, it will be necessary for the accounting department personnel to query the first information source using a first query languages and to query the second information source using a second query language.
However, even in the event that the two information sources employ the same information system (and can therefore be searched using the same query language) the disparity in field names used to store the various types of data in each information source may prevent data from both information sources from being searched simultaneously.
For instance, similar types of data may have been stored in each information source using different data field names (e.g.—customer's names may be stored in a first information source in a data field named “customer”, and may be stored in a second information source in a data field named “cust id”). Regardless of the compatibility of query languages used, a query request of customers' names using either field name would fail to retrieve data from the data field having the other field name. Conversely, there may be instances when two fields in different information sources have similar data field names but contain different types of data, thereby resulting in a single query returning two different types of data.
One of the methods that has been employed in the prior art to solve this problem is the employment of data warehouses. FIG. 17 is a block diagram that illustrates the main components of a system that employs data warehousing. In the diagram shown, various information sources are represented by information sources 35a, 35b and 35c. 
Each of the information sources are coupled to extraction transformation load 30.
Extraction transformation load extracts data from the disparate information sources on a pre-determined, periodic basis, and transforms it into a common data format.
Extraction transformation load 30 is in turn coupled to data warehouse 25. Once data is extracted from the information sources by extraction transformation load 30 and re-formatted, it is transmitted by extraction transformation load 30 to data warehouse 25 for storage therein. Since extraction transformation load 30 is periodically extracting new data from the information sources, new data is periodically being transmitted by extraction transformation load 30 to data warehouse 25, and the data stored in data warehouse 25 is periodically updated.
Client application 20 is coupled to data warehouse 25, and employs the data stored in data warehouse 25 to perform its intended functions. However, one of the problems that exist with a system of this kind is that the data stored in data warehouse 25, and hence the data employed by the client when performing its intended functions, is stale. This follows because there may be a large volume of data stored in the information sources, requiring a significant amount of time for extraction transformation load 30 to extract the data from the information sources and to transmit it for storage in data warehouse 25. The client's application does not employ data directly from the information sources, but instead employs data which has been updated at some time in the past which is unknown to the client, and which may be inaccurate.
Another method that has been employed in the prior art to solve this problem is the employment of data silos. FIG. 18 is a block diagram that illustrates the main components of a system that employs data silos. In the diagram shown, various information sources are represented by information sources 55a, 55b and 55c. Each of the information sources are coupled to a data accessor 50. In this case, information sources 55a, 55b and 55c are coupled to data accessor 50a, 50b and 50c, respectively.
Data accessors 50 comprise code for retrieving data from the information sources. Data accessors 50a, 50b and 50c are in turn coupled to router middleware module 45. Router middleware module 45 is coded to retrieve and consolidate data from the data accessors. Client application 20 is coupled to router middleware module 25, and communicates with it to request data in order to perform its intended functions.
However, one of the problems that exist with a system of this kind is that a great deal of manual programming labor is required in order to code router middleware 45 and data accessors 50. Specifically, this system requires that router middleware 45 have logic which is hard-coded to the information sources. The problems of generating and maintaining the necessary code to operate a system of this kind can be unmanageable.
Thus, there is a need for a system for logically integrating disparate information sources.